package com.ruoyi.repair.mapper;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

import com.ruoyi.repair.domain.PropertyRepair;
import org.apache.ibatis.annotations.Param;

/**
 * 报修单Mapper接口
 * 
 * @author ruoyi
 * @date 2025-10-27
 */
public interface PropertyRepairMapper 
{
    /**
     * 查询报修单
     * 
     * @param repairId 报修单主键
     * @return 报修单
     */
    public PropertyRepair selectPropertyRepairByRepairId(Long repairId);

    /**
     * 查询报修单列表
     * 
     * @param propertyRepair 报修单
     * @return 报修单集合
     */
    public List<PropertyRepair> selectPropertyRepairList(PropertyRepair propertyRepair);

    /**
     * 新增报修单
     * 
     * @param propertyRepair 报修单
     * @return 结果
     */
    public int insertPropertyRepair(PropertyRepair propertyRepair);

    /**
     * 修改报修单
     * 
     * @param propertyRepair 报修单
     * @return 结果
     */
    public int updatePropertyRepair(PropertyRepair propertyRepair);

    /**
     * 删除报修单
     * 
     * @param repairId 报修单主键
     * @return 结果
     */
    public int deletePropertyRepairByRepairId(Long repairId);

    /**
     * 批量删除报修单
     * 
     * @param repairIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePropertyRepairByRepairIds(Long[] repairIds);

    // 按状态和时间查询报修单
    List<PropertyRepair> selectRepairList(@Param("query") PropertyRepair repair, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);

    // 查询维修人员的任务
    List<PropertyRepair> selectByStaffId(@Param("staffId") Long staffId, @Param("status") String status);

    // 统计报修处理情况
    Map<String, Object> selectRepairStats(Long buildingId);
}
